Network and application monitoring traditionally involves processing large amounts of data into aggregate representations. In traditional solutions the data received from monitored networks and applications only provided the values of the aggregates produced. Traditional systems, in general, therefore provide aggregates that are essentially fixed for a given network or application. As applications change over time, the application source code in traditional systems is changed to provide the monitoring infrastructure with information on new aggregates resulting from the application updates. Changes to source code are not only inefficient but can also introduce unforeseen errors into the systems.